<?php

/*
 * File: input.php
 * Descrizione: Input della chat.
 * Check: OK.
*/

// Avvia una nuova sessione o riprende una sessione gi� creata
session_start();

// Include i file necessari
include('inc/config.inc.php');
include('inc/template.inc.php');
include('inc/db.inc.php');
include('inc/check.inc.php');

// Recupera l'id della locazione
if(isset($_GET['loc'])) {
	$loc_id = $_GET['loc'];
} elseif(isset($_POST['loc'])) {
	$loc_id = $_POST['loc'];
}

// Recupera l'id dell'user
$uid = $_SESSION['uid'];

// Recupera l'azione da eseguire
if(isset($_GET['act'])) {
	$action = $_GET['act'];
} else {
	$action = 0;
}
// Se � stato dato l'input per aprire o chiudere una sessione di gioco, esegue
if ($action == 1){
// Crea la sessione
$info = '*[color=black#]Il master '.$_SESSION['unm'].' ha aperto una sessione.[/color]';
// Inserisce un avviso nella chat
$query = "INSERT INTO chat (msg_id, msg_user, msg_text, msg_loc, msg_time, msg_png, msg_pname) VALUES(NULL, '$uid', '$info', '$loc_id', NOW(), '0', '')";
$db->query($query);
// Inserisce i dati della quest nel database
$query3 = "INSERT INTO quests (quest_id, quest_master, quest_start, quest_end, quest_location) VALUES (NULL, '$uid', NOW(), NULL, '$loc_id')";
$db->query($query3);
$lid = mysqli_insert_id($db);
// Aggiorna la chat, modificando il valore di quest attiva da 0 a 1
$query4 = "UPDATE locations SET loc_quest = $lid WHERE loc_id = '$loc_id'";
$db->query($query4);
} elseif ($action == 2) {
// Chiude la sessione
$info = '*[color=black#]Il master '.$_SESSION['unm'].' ha chiuso una sessione.[/color]';
// Inserisce un avviso nella chat
$query = "INSERT INTO chat (msg_id, msg_user, msg_text, msg_loc, msg_time, msg_png, msg_pname) VALUES(NULL, '$uid', '$info', '$loc_id', NOW(), '0', '')";
$db->query($query);
$qid = $_GET['id'];
$query3 = "UPDATE quests SET quest_end = NOW() WHERE quest_id = '$qid'";
$query4 = "UPDATE locations SET loc_quest = 0 WHERE loc_id = '$loc_id'";
// Aggiorna l'ora nel database
$db->query($query3);
$db->query($query4);
}

// Se � stato scritto un messaggio lo inserisce nel database
if(isset($_POST['msg']) != "") {

	// Variabili
	$msg = mysqli_real_escape_string($db, $_POST['msg']);
	$cmd = $msg{0};
	
if ($cmd == "/") {
			// Variabili
			$off = $msg{1};
			if ($off != '/'){
			$maxnum = min(floor(abs(0 + substr(trim($msg), 1))), 1000);
			if ($maxnum == 0) {$maxnum = 6;};
			mt_srand((double)microtime()*1000000);
	        $num = mt_rand(1, $maxnum);

			// Assegna i valori
			$content = $num.'/'.$maxnum;
			$msg = '/'.$content;
}else{
$msg = $_POST['msg'];
}
}
	$query = "INSERT INTO chat (msg_id, msg_user, msg_text, msg_loc, msg_time, msg_png, msg_pname) VALUES(NULL, '$uid', '$msg', '$loc_id', NOW(), '0', '')";
	// Aggiorna l'ora nel database
	$db->query($query);

// Logs dei messaggi	
  $logs = array();
  $logs [] = array(
  'name' => $_SESSION['unm'],
  'location' => $loc_id,
  'message' => utf8_encode($_POST['msg']),
  'date' => date('Y-m-d H:i:s'),
  );
 
  $doc = new DOMDocument();
  $doc->load('logs/chatlogs.xml');
  $doc->formatOutput = true;
  $root = $doc->documentElement;
  $r = $doc->createElement( "log" );
  $root->appendChild( $r );
  
  foreach( $logs as $clogs )
  {
  $name = $doc->createElement( "name" );
  $name->appendChild(
  $doc->createTextNode( $clogs['name'] )
  );
  $r->appendChild( $name );
  
  $location = $doc->createElement( "location" );
  $location->appendChild(
  $doc->createTextNode( $clogs['location'] )
  );
  $r->appendChild( $location );
  
  $message = $doc->createElement( "message" );
  $message->appendChild(
  $doc->createTextNode( $clogs['message'] )
  );
  $r->appendChild( $message );
  
  $date = $doc->createElement( "date" );
  $date->appendChild(
  $doc->createTextNode( $clogs['date'] )
  );
  $r->appendChild( $date );
  
  }
  $doc->save("logs/chatlogs.xml");
}


// Elenco delle tools disponibili per i master
$tools = '';
if($_SESSION['master'] == 1) {
	$tools .= '<div id="toolsopen"><a href="#" onClick="toolsshow()">Apri Comandi Master</a></div>';
	$query2 = "SELECT loc_quest FROM locations WHERE loc_id = '$loc_id'";
	if ($results2 = $db->query($query2)){
		$row2 = $results2->fetch_assoc();
		if($row2['loc_quest'] != 0){// Controlla se nella locazione � in corso una quest.
			$questtoggle = '<form action="input.php?loc='.$loc_id.'&act=2&id='.$row2['loc_quest'].'" method="post"><button type="submit">Chiudi Sessione</button></form>';
		}else{
			$questtoggle = '<form action="input.php?loc='.$loc_id.'&act=1" method="post"><button type="submit">Apri Sessione</button></form>';
		}
	}
}
// Se � stato scritto un messaggio PNG, lo inserisce nel database.
if( ! empty($_POST['pmsg']) AND $_POST['pmsg'] != "") {
	// Variabili
	$pmsg = "";
	$pname = mysqli_real_escape_string($db, $_POST['pname']);
	$pmsg = mysqli_real_escape_string($db, $_POST['pmsg']);
	$pmsg = '�'.$pmsg;
	$query = "INSERT INTO chat (msg_id, msg_user, msg_text, msg_loc, msg_time, msg_png, msg_pname) VALUES(NULL, '$uid', '$pmsg', '$loc_id', NOW(), '1', '$pname')";

	// Aggiorna l'ora nel database
	$db->query($query);

}

// Lista delle tag speciali
$tags = array('temp_title' => $g_name, 'temp_locid' => $loc_id, 'temp_tools' => $tools, 'temp_questtoggle' => $questtoggle);

// Carica il template e formatta le tag speciali
$temp = new template('style/input.template.html');
$temp->replace($tags);

// Visualizza l'output
echo $temp->show();

// Chiude la connessione al database
$db->close();

?>